Binary 란?

NOTE

소스코드가 실행 파일이 되기까지의 과정(컴파일 → 링크 → 빌드)과 동적/정적 링크, 패키지 형식을 정리한다.

IMPORTANT

원문을 AI가 검토·보강함(사실 확인 권장).

📌 개념

프로그램 실행 과정

  • 컴파일 (Compile)
    • 소스코드를 바이너리(기계어) 코드로 변환하는 과정
  • 링크 (Link)
    • 프로젝트 내 여러 소스 파일을 각각 컴파일하면 서로 참조하는 심볼(함수/변수)이 아직 연결되지 않은 상태다
    • 이렇게 분리 컴파일된 오브젝트 파일과 라이브러리를 하나로 묶어 실행 가능한 형태로 연결하는 작업을 “링크”라고 한다

NOTE

동적 링크 vs 정적 링크

  • 동적 링크: 프로그램 실행 도중 외부에 존재하는 공유 라이브러리 코드를 찾아 연결 (실행 파일 크기 작음, 라이브러리 공유)
  • 정적 링크: 컴파일된 라이브러리 코드를 실행 파일에 포함시켜 하나의 파일 생성 (실행 파일 크기 큼, 배포 간단)
  • 빌드 (Build)
    • 소스코드 파일을 실행 가능한 소프트웨어 산출물로 만드는 전체 과정
    • 전처리, 컴파일, 링크, 패키징 등을 포괄하며 컴파일도 빌드의 일부다

NOTE

대표 빌드 도구 전처리, 컴파일, 패키징, 테스팅, 배포 과정을 돕는다.

  • Ant
  • Maven
  • Gradle

패키지 형식

  • 소스 컴파일 패키지
    • Linux에서 주로 사용하는 소스 압축 형식 (예: tar.gz)
    • 사용자가 직접 컴파일해서 설치
  • 바이너리 패키지
    • 실행 파일, 설정 파일, 라이브러리 등을 미리 컴파일해 묶은 형식
    • 압축을 풀어 그대로 설치 (예: rpm, yum, apt 방식)